<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
lang="utf-8" xml:lang="utf-8">
<head>
<title>Schedule</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<link rel="stylesheet" href="style/base.css"  type="text/css" />

</head>
<body>
<div id="content">

<h1 class="title">Schedule</h1>

<table  border="2" cellspacing="0" cellpadding="6" rules="all" frame="all">
<tbody>
<tr><td>No.</td><td>Topic</td><td>Lecture & Readings</td><td>Homework</td><td>Lab</td></tr>
<tr><td>1</td>
    <td>Standard ML
    </td>
    <td>
    <a href="slides/lec01-overview.ppt">Overview</a>;<br>
    <a href="slides/lec02-SML1.ppt">Core language</a>; <a href="slides/code1.sml">code1</a><br>
    <a href="slides/lec03-SML2.ppt">Module language</a>; <a href="slides/code2.sml">code2</a><br>
    <a href="slides/lec04-SML3.ppt">Interpreter</a>; <a href="slides/code3.sml">code3</a><br><br>
    Read: <a href="http://www.cs.cmu.edu/~rwh/smlbook/online.pdf">Harper's book</a>
    </td>
    <td>&nbsp</a>
    <td>Lab 1: <a href="labs/lab1.html">mini-JVM</a>
    </td>
</tr>

<tr><td>2</td>
    <td>Lexing
    </td>
    <td>
    <a href="slides/lec05-lexing.ppt">Lexical Analysis</a><br><br>
    Read: <a href="http://www.smlnj.org/doc/ML-Lex/manual.html">ML-Lex manual</a>
    (or the <a href="http://mlton.org/pages/Documentation/attachments/mllex.pdf">pdf</a> version)<br>
    
    </td>
    <td><a href="hw/hw1.html">Homework 1</a><br><br>
     <a href="file/Homework1.pdf">Solution1(pdf)</a></td>
    <td>Lab 2: <a href="labs/lab2.html">Lexer</a>
    </td>
</tr>


<tr><td>3</td>
    <td>Top-down Parsing
    </td>
    <td>
    <a href="slides/lec06-parsing.ppt">LL(k) parsing</a>
    </td>
    <td><a href="hw/hw2.html">Homework 2</a><br><br>
	 <a href="file/Homework2.pdf">Solution2(pdf)</a>
    </td>
    <td>&nbsp
    </td>
</tr>

<tr><td>4</td>
    <td>Bottom-up Parsing
    </td>
    <td>
    <a href="slides/lec07-parsingII.ppt">LR(k) parsing</a> <br><br>
    Read: <a href="http://www.smlnj.org/doc/ML-Yacc/index.html">ML-Yacc manual</a>
    (or the <a href="http://mlton.org/pages/Documentation/attachments/mlyacc.pdf">pdf</a> version)</a>
    </td>
    <td><a href="hw/hw3.html">Homework 3</a><br><br>
	 <a href="file/Homework3.pdf">Solution3(pdf)</a>
    </td>
    <td>Lab 3: <a href="labs/lab3.html">Parser</a><br><br>
     <a href="labs/Lab3.ppt">PPT</a>
    </td>
</tr>

<tr><td>5</td>
    <td>Syntax Tree
    </td>
    <td>
    <a href="slides/lec08-ast.ppt">Abstract sytnax tree</a>
    </td>
    <td>Homework 4</td>
    <td>Lab 4: <a href="labs/lab4.html">Abstract Syntax Tree & Elaborator</a><br><br>
    </td>
</tr>

<tr><td>6</td>
    <td>Elaboration
    </td>
    <td>
    <a href="slides/lec09-elab.ppt">Elaboration </a>
    </td>
    <td>Homework 5</td>
    <td>Lab 5: Elaborator
    </td>
</tr>

<tr><td>7</td>
    <td>Runtime Organization
    </td>
    <td>    
    <a href="slides/lec10-runtime.ppt">x86 ISA</a><br><br>
    Read: <a href="../docs/i386/toc.htm">Intel 80386 Reference Programmer's Manual</a>
    (chap 1, 2, 3 and 17)<br>
    Refer to: <a href="http://sourceware.org/binutils/docs/as/index.html">GNU as manual</a>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

<tr><td>8</td>
    <td>Code Generation
    </td>
    <td>
    <a href="slides/lec11-codegen.ppt">Stack codeGen</a><br>
    <a href="slides/lec12-function.ppt">Function</a><br><br>
    Read: <a href="http://www.pcengines.ch/tp3.htm">Turbo Pascal 3.0 Compiler Code Generation Internals </a><br>
    Refer to: <a href="file/abi386-4.pdf">x86/Linux ABI</a> (chap. 3)
    </td>
    <td>
    </td>
    <td>Lab 6: Code Generator
    </td>
</tr>

<tr><td>9</td>
    <td>Closure and Environment
    </td>    
    <td>
    <a href="slides/lec13-closure.ppt">Closure</a><br><br>
    
    </td>
    <td>Homework 6</td>
    <td>
    </td>
</tr>

<tr><td>10</td>
    <td>Control Flow Graph
    </td>
    <td>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

<tr><td>11</td>
    <td>Data Flow Analysis
    </td>
    <td>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

<tr><td>12</td>
    <td>Static Single-assignment Form
    </td>
    <td>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

<tr><td>13</td>
    <td>Register Allocation
    </td>
    <td>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

<tr><td>14</td>
    <td>OO Languages
    </td>
    <td>
    <a href="slides/lec18-object.ppt">OO</a><br><br>
    Read: <a href="http://www.openrce.org/articles/full_view/23">MS VC</a>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

<tr><td>15</td>
    <td>Exception
    </td>
    <td>
    <a href="slides/lec19-exception.ppt">Exception</a><br><br>
    Read: <a href="http://www.openrce.org/articles/full_view/21">MS VC</a>
    </td>
    <td>
    </td>
    <td>
    </td>
</tr>

</tbody>
</table>


<div id="postamble">
</div>
</div>
</body>
</html>
